#ifndef MOCHA_DETAIL_EVENTS_HPP_INCLUDED
#define MOCHA_DETAIL_EVENTS_HPP_INCLUDED

/**
 * @file 
 */

#include "mocha/enum_string.hpp"
#include "mocha/events.h"

// TODO: Pull the enumerators for event masks into the mocha namespace too.

namespace mocha {
	using ::mocha_joy_button_event;
	using ::mocha_joy_hat_event;
	using ::mocha_joy_motion_event;
	using ::mocha_key_event;
	using ::mocha_mouse_button_event;
	using ::mocha_mouse_motion_event;
	using ::mocha_quit_event;
	using ::mocha_user_event;
	using ::mocha_event;
	using ::mocha_event_type_mask;
	typedef mocha_joy_button_event joy_button_event;
	typedef mocha_joy_hat_event joy_hat_event;
	typedef mocha_joy_motion_event joy_motion_event;
	typedef mocha_key_event key_event;
	typedef mocha_mouse_button_event mouse_button_event;
	typedef mocha_mouse_motion_event mouse_motion_event;
	typedef mocha_quit_event quit_event;
	typedef mocha_user_event user_event;
	typedef mocha_event_type_mask event_type_mask;
	typedef mocha_event event;
}
MOCHA_ENUM_STRING_BEGIN(mocha::event_type_mask) {
	MOCHA_ENUM_STRING(mocha_event_joy_button_down);
	MOCHA_ENUM_STRING(mocha_event_joy_button_up);
	MOCHA_ENUM_STRING(mocha_event_joy_hat);
	MOCHA_ENUM_STRING(mocha_event_joy_motion);
	MOCHA_ENUM_STRING(mocha_event_key_down);
	MOCHA_ENUM_STRING(mocha_event_key_up);
	MOCHA_ENUM_STRING(mocha_event_mouse_button_down);
	MOCHA_ENUM_STRING(mocha_event_mouse_button_up);
	MOCHA_ENUM_STRING(mocha_event_mouse_motion);
	MOCHA_ENUM_STRING(mocha_event_quit);
	MOCHA_ENUM_STRING(mocha_event_video_mode);
} MOCHA_ENUM_STRING_END;

#endif

